One of the most important parts of the software development process is the process of debugging. Debugging refers to the process of identifying and eliminating errors within a software program. A debugging application program, called a debugger, provides tools to assist a programmer in locating and correcting program errors. For instance, most debuggers provide tools for stepping through the executing code of a program, monitoring the status of input/output ports, and for monitoring and modifying the contents of memory locations and central processing unit (“CPU”) registers.
Traditionally, a debugger must be run directly on the computer system that is executing the software that is being debugged. This, however, greater hinders the software debugging process because the programmer performing the debugging must be in close proximity to the system being debugged. Other systems allow the debugging of one computer (the “target computer”) through another computer (the “host computer”) connected via a locally-connected non-network cable (i.e. a serial/USB/parallel cable) cable. However, these systems also require that the programmer be in relatively close proximity to the system being debugged. This may be extremely inconvenient when it is necessary to debug a computer system that is located across the country or even across the world.
Using a non-network connection between the target and the host limits the distance that the target may be located from the host to the length of the cable which, in many case, is a short distance. Moreover, because a non-network cable connection is a simple point-to-point physical connection, the connection must be physically removed and then attached to each host computer upon which debugging operations are to be performed. Changing cables in this manner can be time consuming and frustrating for the programmer responsible for debugging the target computer.
It is with respect to these considerations and others that the various embodiments of the present invention have been made.